﻿// 707 离散化.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
/*
http://oj.daimayuan.top/course/22/problem/896

给你n个数a1,a2,…,an。

输出离散化之后的结果，也就是对于每个ai，输出它是去重之后第几小的。

输入格式
第一行一个整数n(1≤n≤105)。

接下来一行n个整数a1,a2,…,an(1≤ai≤109)。

输出格式
输出一行n个整数。

样例输入
5
5 3 5 2 5
样例输出
3 2 3 1 3

5
5 5 5 5 5
*/

#include <iostream>
#include <set>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> a;


int main()
{
	int n; cin >> n;
	int minv = 99999999;
	for (int i = 1; i <= n; i++) {
		int t; cin >> t;
		minv = min(minv, t);
		a.push_back(t);
	}
	for (int i = 0; i < a.size(); i++) {
		if (a[i] == minv) {
			a[i]--;
		}
	}
	vector<int> v = a;
	sort(a.begin(), a.end());
	a.erase(unique(a.begin(), a.end()), a.end());

	for (int i = 0; i < v.size(); i++) {
		int t = v[i];
		cout << lower_bound(a.begin(), a.end(), t) - a.begin()+1 << " ";
	}


	return 0;
}
  